#ifndef MSG_H
#define MSG_H
#include <stdint.h>

//包是否压缩过
enum
{
    PACKAGE_UNCOMPRESSED,
    PACKAGE_COMPRESSED
};
typedef int                int32_t;


enum msg_type
{
    msg_type_unknown,
    msg_type_heartbeat = 1000,     //心跳包
    msg_type_register,             //注册
    msg_type_login,                //登陆
    msg_type_getofriendlist,       //获取好友列表
    msg_type_finduser,             //查找用户
    msg_type_operatefriend,        //添加、删除等好友操作
    msg_type_userstatuschange,     //用户信息改变通知
    msg_type_updateuserinfo,       //更新用户信息
    msg_type_modifypassword,       //修改登陆密码
    msg_type_creategroup,          //创建群组
    msg_type_getgroupmembers,      //获取群组成员列表
    msg_type_chat   = 1100,        //单聊消息
    msg_type_multichat,            //群发消息
    msg_type_kickuser,             //被踢下线
    msg_type_remotedesktop,        //远程桌面
    msg_type_updateteaminfo,       //更新用户好友分组信息
    msg_type_modifyfriendmarkname, //更新好友备注信息
    msg_type_movefriendtootherteam, //移动好友至

#ifdef FXN_VERSION
    //定制协议
    msg_type_uploaddeviceinfo   = 2000, //上传设备信息
    msg_type_downloaddeviceinfo = 2001  //拉取设备信息
#endif
};

#pragma pack(push, 1)
//协议头
struct msg
{
    char     compressflag;     //压缩标志，如果为1，则启用压缩，反之不启用压缩
    int32_t  originsize;       //包体压缩前大小
    int32_t  compresssize;     //包体压缩后大小
    char     reserved[16];
};


//在线类型
enum online_type{
    online_type_offline         = 0,    //离线
    online_type_pc_online       = 1,    //电脑在线
    online_type_pc_invisible    = 2,    //电脑隐身
    online_type_android_cellular= 3,    //android 3G/4G/5G在线
    online_type_android_wifi    = 4,    //android wifi在线
    online_type_ios             = 5,    //ios 在线
    online_type_mac             = 6     //MAC在线
};
#pragma pack(pop)

#endif // MSG_H
